package CalendarioDAOS;

import CalendarioDTOS.RegistrosDiaDTO;
import Herramientas.PasarelaDatos;
import Herramientas.ResultSets;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author alan
 */
public class RegistrosDiaDAO {

    private PasarelaDatos db;
    private ResultSets res;

    public RegistrosDiaDAO() {
        db = new PasarelaDatos();
        res = new ResultSets();
    }

    /**
     * ALAN GONZALEZ -- METODO QUE DEVUELVE UN VECTOR CON REGISTROS POR FECHA
     * POR PERFIL # BUSQUEDA PERSONALIZADA
     *
     * @param idUser
     * @param Date
     * @return
     */
    public Vector registrosDia(int idUser, String date) {
        Vector records = new Vector();
        db.openDatabase();
        String query
                = "select * from evento_admin where user_id= " + idUser + " and fecha_evento='" + date + "'";
        ResultSet rst = null;
        rst = db.executeQuery(query);
        try {
            while (rst.next()) {
                RegistrosDiaDTO diaRegs = new RegistrosDiaDTO();
                diaRegs = res.registrosDiaDTO(rst);
                records.add(diaRegs);
            }
        } catch (SQLException ex) {
            Logger.getLogger(CalendarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return records;
    }

    /**
     * ALAN GONZALEZ -- METODO PARA CREAR UN REGISTRO AL DIA
     *
     * @param regDia
     */
    public void insertarRegistro(RegistrosDiaDTO regDia) {
        db.openDatabase();
        String query = new String();
        query = "insert evento_admin set";
        query += " id=0";
        query += " , user_id =" + regDia.getUserId();
        query += " , fecha_evento='" + regDia.getFechaEvento() + "'";
        query += " , hora_evento_inicio=" + regDia.getHoraEventoInicio()  ;
        query += " , hora_evento_fin=" + regDia.getHoraEventoFin() ;
        query += " , descripcion='" + regDia.getDescripcion() + "'";
        System.out.println(query);
        db.execute(query);
        db.closeDatabase();
    }

    /**
     * ALAN GONZALEZ -- METODO PARA CONTAR EVENTOS DE UNA FECHA Y USUARIO
     * DETERMINADOS
     *
     * @param idUserUp
     * @param date
     * @return
     */
    public int cuentaRegistrosDia(int idUserUp, String date) {
        int count = 0;
        db.openDatabase();
        ResultSet rst = null;
        String query = "select count(*) as contador from evento_admin where fecha_evento='" + date + "'" + " and user_id=" + idUserUp;
        System.out.println("QUERY DE CONTEO:  " + query);
        
        rst = db.executeQuery(query);
        try {
            if (rst.next()) {
                count = rst.getInt("contador");
            } else {
                count = 0;
            }
        } catch (SQLException ex) {
            Logger.getLogger(RegistrosDiaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return count;
    }

    /**
     * ALAN GONZALEZ -- METODO QUE DEVUELVE LA HORA FIN DEL ULTIMO EVENTO REGISTRADO EN EL DIA
     * @param idUserUp
     * @param date
     * @return
     */
    public int ultimoEventoFin(int idUserUp, String date) {
        int hora = 0;
        db.openDatabase();
        ResultSet rst = null;
        String query = " SELECT * FROM evento_admin where ";
        query += " user_id="+idUserUp;
        query += " and";
        query += " fecha_evento='"+date+"'";
        query += " order by evento_admin.hora_evento_fin desc";
        query += " limit 1";
        rst = db.executeQuery(query);
        try {
            if (rst.next()) {
                hora = rst.getInt("hora_evento_fin");
            } else {
                hora = 0;
            }
        } catch (SQLException ex) {
            Logger.getLogger(RegistrosDiaDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        db.closeDatabase();
        return hora;
    }

}
